技術問答
技術文章
iT 徵才
Tag
聊天室
2024 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
0
作業系統L6-同步
作業系統
蔡基
2022-01-06 00:21:01
‧
2828 瀏覽
分享至
作業系統L6-同步
臨界區間(critical section)
每一行程中的部分程式碼,可以共同改變變數,更新表格,寫入檔案
區間結構
入口區段(entry section):臨界區間入口
出口區段(exit section):臨界區間出口
剩餘區段(remainder section)
臨界區間問題
條件
互斥(Mutual Exclusion)
:若有行程已在
臨界區間
執行,其他行程不能再同區間執行
進行(Progress)
:被選擇的行程不得被無限延遲下去
限制性等待(Bounded Waiting)
:一個行程被要求進入
臨界區間
答應前,允許其他一個行程進入
問題解答
可搶先核心(preemptive kernels)
:
核心模式
執行時可搶先
不可搶先核心(nonpreemptive kernels)
:離開
核心模式
或自動交出CPU時才可搶先
同步硬體
鎖(locking)
用於保護
臨界區間
單一處理器可停止中斷,多處理器較沒效率
同步軟體
互斥鎖(Mutex Lock)
acquire():取得鎖
release():釋放鎖
忙碌等待(busy waiting)
自旋鎖(spinlock)
號誌(Semaphore)
不需要忙碌等待的同步工具
計數號誌(Counting semaphore)
:不受限制的整數值
二元號誌(Binary semaphore)
:數值可以是0,1,可用來取代
互斥鎖
無忙碌等待的號誌
每個號誌都有一個相關聯的
等待佇列
數值(整數型態)
指向串列的下一筆紀錄
操作
block:把呼叫操作的行程放到適當的等候佇列
wakeup:移除等候佇列的一個行程,放到就緒佇列
死結和飢餓
死結(Dead Lock)
:兩個以上的行程等待一個只能被等待的行程
飢餓(Starvation)
:無限期阻隔
優先權倒置(Priority Inversion)
:高優先權行程被低優先權行程鎖把持造成排班問題,需用**優先權繼承協定(priority-inheritance protocol)**解決
典型的同步問題
有限緩衝區問題
n個緩衝區,每一個緩衝區保存一項資料
讀取者-寫入者問題
讀取者
:只能讀取資料集;它們不能執行資料集
寫入者
:可以讀和寫資料集
允許許多
讀取者
同時去讀取共用資料
同一時間只有一個
寫入者
可以存取資料
讀取者-寫入者問題的變形
除非有寫入者已獲得允許去使用共用資料,否則讀取者不需保持等候狀態
只要寫入者準備好之後,需要盡快的撰寫共用資料
哲學家進餐的問題(Dining-philosophers Problem)
需兩枝筷子才能吃,吃完同時放下兩枝筷子
監督程式
一種對於行程同步提供方便和有效機制的高階使用一組操作資料的函數來封裝資料
抽象資料型態(abstract data type,ADT):只能由程序內執行碼存取的內部變數
條件變數
condition x, y;
x.wait () :使用後的行程會被暫停,直到x.signal ()發生
x.signal ():恢復因為x.wait ()而被暫停的行程
留言
追蹤
檢舉
直播研討會
{{ item.subject }}
{{ item.channelVendor }}
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
1064
組
團體組數
40
組
累計文章數
22195
篇
完賽人數
600
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
windows server
linux
css
react
vue.js
熱門問題
請問內網IP如何轉外網IP?
兩端防火牆使用IPSEC互PING之問題
如何寫公式才能利用excel 觸發一個數據時傳送一個訊息給 自已的line呢?有沒有可以用其它方式,來取代line notify 的方法,因為line 開始收費
Windows7升級Windows10後網路功能異常
python爬蟲 動態生成網頁104人力銀行
區域網路問題提問
新手學習編程,哪種編程語言好?
vmware 虛擬機(windows)裡顯示使用容量與實際檔案容量不符合
2台 Hyper-V 2008 R2 叢集主機(硬體規格相同), 如何加入一台新機? 謝謝.
OBS使用問題
熱門回答
請問內網IP如何轉外網IP?
防火牆與DNS請教
Fortigate 50B 重置密碼
新手學習編程,哪種編程語言好?
區域網路問題提問
熱門文章
每日一篇學習筆記 直到我做完專題 :( [Day32]
每日一篇學習筆記 直到我做完專題 :( [Day33]
每日一篇學習筆記 直到我做完專題 :( [Day34]
隨時切換 WINDOWS 右鍵新舊版選單
每日一篇學習筆記 直到我做完專題 :( [Day35]
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}